/* ========================================
 *
 * Copyright Nano IC, 2021-02-25
 * All Rights Reserved
 * UNPUBLISHED, LICENSED SOFTWARE.
 *
 * CONFIDENTIAL AND PROPRIETARY INFORMATION
 * WHICH IS THE PROPERTY OF Nano IC.
 *
 * ========================================
*/
#ifndef  __ONE_WIRE_BUS_EXT_H__
#define  __ONE_WIRE_BUS_EXT_H__
// #include <stdbool.h>
// #include <stdint.h>
#include "one_wire_bus_tra.h"

/**
 * @brief 生成随机数。每发送一次包调一次，每次都生成不同随机数
 * 
 * @return uint8_t 
 */
// extern uint8_t gen_random_serial(void);


/**
 * @brief : 获取当前CPU中断状态，然后关CPU中断
 *
 * @return uint32_t : 返回关CPU中断前的CPU中断状态
 */
// extern uint32_t  one_wire_bus_disable_irq(void);


/**
 * @brief : 恢复CPU中断状态
 *
* @param irq: CPU中断状态; 和one_wire_bus_disable_irq配套使用
 * @return 
 */
// extern void  one_wire_bus_irq_recover(uint32_t irq);


/**
 * @brief : 调用串口驱动，发送一个数据包
 *
 * @param p_buf: 要发送的数据指针
 * @param len: 要发送的数据长度
 * @return  true: 发送成功
 * @return  false: 发送失败
 */
extern bool one_wire_bus_uart_send_one_packet(uint8_t *p_buf,uint16_t len);

/**
 * @brief 对单总线收到参数设置命令进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_parameter_set(SourcePacketStr *p_rec_packet);

/**
 * @brief 对单总线收到状态读取命令进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_status_read(SourcePacketStr *p_rec_packet);

/**
 * @brief 对单总线收到升级命令进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_upgrade(SourcePacketStr *p_rec_packet);

/**
 * @brief 对单总线收到加密认证命令进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_encryption(SourcePacketStr *p_rec_packet);

/**
 * @brief 对单总线收到调试命令进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_debug_cmd(SourcePacketStr *p_rec_packet);

/**
 * @brief 对单总线收到工厂命令进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_factory_cmd(SourcePacketStr *p_rec_packet,uint16_t len);

/**
 * @brief 对单总线收到IIC类设置进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_iic_class_out(SourcePacketStr *p_rec_packet);

/**
 * @brief 对单总线收到IIC类读取进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_iic_class_in(SourcePacketStr *p_rec_packet);

/**
 * @brief 对单总线收到自定义命令进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_custom(SourcePacketStr *p_rec_packet);

/**
 * @brief 对单总线收到同步命令进行处理
 * 
 * @param p_rec_packet 收到数据包指针
 * 
 * @return true : 成功
 * @return false : 失败
 */
extern bool one_wrie_bus_app_rec_sync_cmd(SourcePacketStr *p_rec_packet);


#endif




/* [] END OF FILE */
